﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;
using Cesave.Domain.Core;

namespace Cesave.Domain.PermisosModule.Contracts.CultivosPropiedades
{
    /// <summary>
    /// Contrato del repositorio de propiedades del cultivo.
    /// </summary>
    public interface ICultivosPropiedadRepository
        : IRepositoryEx<CultivosPropiedad>
    {
        /// <summary>
        /// Encuentra las propiedades del cultivo de acuerdo a las especificaciones
        /// </summary>
        /// <param name="cultivoSpecification">
        /// Especificación de búsqueda por cultivo.
        /// </param>
        /// <param name="cicloSpecification">
        /// Especificación de búsqueda por ciclo.
        /// </param>
        /// <param name="juntaSpecification">
        /// Especificación de búsqueda por junta.
        /// </param>
        /// <returns>
        /// Propiedades del cultivo.
        /// </returns>
        CultivosPropiedad FindCultivoPropiedades(
            CultivosPropiedadesByCultivoSpecification cultivoSpecification,
            CultivosPropiedadesByCicloSpecification cicloSpecification,
            CultivosPropiedadesByJuntaSpecification juntaSpecification
        );
    }
}
